package com.hup.joystick.service.joystick;

import com.hup.joystick.model.KeyMapConfig;
import com.hup.joystick.model.joystick.NativeEvent;
import com.hup.joystick.model.joystick.StandardEvent;

/**
 * @author hugan
 * @date 2020/10/20
 */
public interface JoyEventListener {

    /**
     * @return {@link #onJoyEvent(NativeEvent, StandardEvent)}回调中,是否传入 {@link NativeEvent}
     */
    default boolean parseNativeEvent() {
        return true;
    }

    KeyMapConfig getKeyMapConfig();

    /**
     * 处理按键事件,
     * @param nativeEvent 原始按键事件, {@link #parseNativeEvent()}为false时为null
     * @param standardEvent 标准按键事件
     * @apiNote 本方法是JNA回调,必须在方法体内捕获异常
     */
    void onJoyEvent(NativeEvent nativeEvent, StandardEvent standardEvent);
}
